
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>回调函数</title>
</head>
<body>
    
    <script>

        /**
        回调函数： 是异步的
        JS中的函数名本身就是变量，所以函数也可以作为值来使用。
            也就是说，不仅可以像传递参数一样把一个函数传递给另一个函数，
            而且可以将一个函数作为另一个函数的结果返回。

            js特点：
                单线程，
                任务：
                    同步：js主线程
                    异步：兄弟线程处理
                事件循环队列机制

        */

        // 问题痛点：无法接取函数内部异步处理的结果
        // function sum(a,b) {
        //     // 延迟两秒执行
        //     setTimeout(() => {
        //         console.log("触发了计算结果");
        //         return  a+b;
        //     }, 2000);
        // }

        // console.log(sum(10,20));


        // callback:回调函数，用来监听或者是接取异步任务处理的结果

        function sum(a,b,callback) {
            // 延迟两秒执行
            setTimeout(() => {
                console.log("触发了计算结果");
                var count = a+b
                callback(count)
                
            }, 2000);
        }

        function addListen(para) {
            console.log('处理的结果是:',para);
            
        }

        console.log(sum(10,20,addListen));
        

    </script>
</body>
</html>